COMMON ARCHITECTURES
Author: RAMU MEDA
Date: 01/sep/03
Architecture is a set of structuring principles that enables a system
to be comprised of a set of simpler
systems
each with its own local
context that is independent of but not inconsistent with the context of the
larger system as a whole. [Sun Microsystems, Inc.]
Software Architecture
·
Software architecture is the structure of structures and take
away the functions that implement business requirements and what remains is
architecture.
·
Description of a structural framework to help the design of
the application.
·
The description of a development environment and
deployment configuration that supports the non-functional requirements of a software
application.
·
A software architect is most active during the early stages
of development but must participate during the entire development lifecycle of
a product.
·
Architecture is developed and described somewhere between when a vision for the product is
developed and before construction begins.
·
The software architecture must be baselined (agreed on by
all stakeholders) before construction begins because a change in the
architecture usually has vast consequences.
Architectural considerations: An
architecture can be assessed using the following qualitative measures:
·
A non-functional
requirement is one that is specified for a software system and does not pertain to
a business function to be developed in the system.
·
Non-Functional requirements are usually quality attributes
for the software system.
·
Also called service-level requirements or Quality of Service (QoS) requirements
or Non-functional requirements
·
During the inception and elaboration phases, architect works with defining the quality
of service measurement for these QoS reqs.
·
One has to make trade-offs between these requirements (For
example, if the most important service-level requirement is the performance of the system, you might sacrifice
the maintainability and extensibility of the system to ensure
that you meet the performance quality of service)
- Scalability
- Maintainability
- Reliability
- Availability
- Extensibility
- Performance
- Manageability
- Security
1. Scalability
Scalability
is the ability to economically support the required quality of service as the
load increases. There are two types of scaling:
- Sign of Scalable system: as the load
increases, the system still responds within the acceptable limits
- Capacity of a system: maximum number of processes or users a
system can handle and still maintain the quality of service
- If a system is running at
capacity and can no longer respond within an acceptable time frame, then
it has reached its maximum scalability.
- To scale a system that has met capacity,
you must add additional hardware. This additional hardware can be added
vertically or horizontally
1.1. Vertical
Scaling
- Achieved by adding capacity
(memory, CPUs, etc.) to existing servers.
- Requires few to no changes to
the architecture of a system.
- Increases: Capacity, Manageability
- Decreases: Reliability,
Availability (single failure is more likely to lead to system
failure)
- Vertical scalability is
usually cheaper than horizontal scalability.
- J2EE supports vertical scaling
because of automatic lifecycle management. Adding more capacity to a
server allows it to manage more components (EJBs, etc.).
1.2. Horizontal
Scaling
- Achieved by adding servers to
the system.
- Increases the complexity of
the system architecture.
- Increases: Reliability,
Availability, Capacity, Performance (depends on load balancing),
Flexibility
- Decreases: Manageability
(more elements in the physical architecture)
- J2EE supports horizontal
scaling because the container and server handle clustering and
load-balancing.
- Availability and reliability
are obtained through scaling. Scalability affects capacity. The more
scalable the system is the more capacity it can support. This must be
traded-off against the complexity & manageability costs.
2. Maintainability
- Maintainability is the ability
to correct flaws in the existing functionality without impacting any other
components
- cannot measure at the time of
deployment ( like extensibility )
- Features to enhance the maintainability of a system: low coupling, modularity, and documentation
- How related is this to
Flexibility? Flexibility is the ability to change the architecture to meet
new requirements in a cost-efficient manner. A flexible system should be
more maintainable in the face of changes to the environment and/or to the
application itself.
- Improves: Availability,
Reliability, Scalability
- Decreases: Performance,
Manageability
3. Reliability
- Reliability is the ability to
ensure the integrity and consistency of the application and all of its
transactions.
- You increase reliability
through the use of horizontal scalability, i.e., by adding more servers.
This only works up to a certain point, though.
- When you increase reliability
you increase availability.
- Reliability can have a
negative impact on scalability. If the system cannot maintain the
reliability as the load increases, then the system is really not scalable.
So, for a system to truly scale it must be reliable.
4. Availability
- Availability is about assuring
that services are available to the required number of users for the
required proportion of time.
- Reliability can contribute to
availability, but availability can be achieved even if components fail. By
setting up an environment of redundant components and failover, an
individual component can fail and have a negative impact on reliability,
but the service is still available due to the redundancy.
5. Extensibility
- The ability to modify or add
functionality without impacting the existing functionality.
- Features to ensure
extensibility: low
coupling, interfaces, and encapsulation
- You cannot measure
extensibility when the system is deployed, but it shows up the first time
you must extend the functionality of the system ( like maintainability )
- The key to an extensible
design is to make an effective OO design. Extensibility pays the most
towards the font end of a system.
- Some rough guidelines:
- More than 25 top-level
classes will lead to problems
- Every use case should be able
to be implemented using domain model methods
- J2EE supports extensibility
because it is component-based and allows you to separate the roles of an
app. JSPs can handle presentation. Servlets can handle routing, and EJBs
can handle business logic.
6. Performance
- Measured as response time/transaction/user or number of transactions/unit time.
- Architectural performance is
concerned with creating an architecture that forces end-to-end
performance.
- The purpose of an architecture
that ensures performance is to control expensive calls and to identify
bottlenecks.
- If you know the boundaries of
the various parts of the system, the technologies, and the capabilities of
the technologies you can do a good job of controlling performance.
- You want to minimize the
number of network calls your distributed app makes – make a few “large”
calls that get a lot of data vs. lots of calls that get small amounts of
data.
- Try to minimize
process-to-process calls because they are expensive.
- Use resource pooling to reduce
the number of expensive resources that need to be created like network
connections, database connections, etc.
7. Manageability
- Manageability refers to the
ability to manage a system to ensure the health of the system.
- A single tier or monolithic
app would be more manageable from a management perspective than a
multi-tier system but this must be weighed against the possibility of a
change rippling through a monolithic app.
- A simple architecture may not
be as flexible or available as a more complex system but the amount of
effort required to keep the system up &
functioning will be less.
- A component-based architecture
like J2EE offsets some of the manageability problems caused by a
multi-tier system.
8. Security
- Security is the ability to
ensure that the system cannot be compromised.
- Security is by far the most difficult systemic quality
to address.
- In the architecture
description of any system a description of security strategies and
implementation methods is very important
- Creating an architecture that
is separated into functional
components makes it easier to secure the system because you can build security zones around the components. If a component is
compromised, then it is easier to contain the security violation to that
component
- Security includes not only
issues of confidentiality and integrity, but also relates to Denial-of-Service (DoS) attacks that
impact availability
- Tradeoffs: personal privacy,
ease of use, and expense.
- JAAS is a Java API for authentication and
authorization that can be implemented by application server vendors, JCE for cryptography and JSSE for SSL extensions are java
technologies that support data encryption.
- A highly secure system is:
- More costly
- Harder to define and develop
- Requires
more watchdog activities
Architectural
terms: (Paul Allen Book)
- Abstraction is a symbol for something
used repeatedly in a design that hides details and is a clear
representation.
- Boundaries are the area where two
components interact.
- Brittleness is the degree to which small
changes will break large portions of the system.
- Capabilities are the non-functional,
observable system qualities including scalability, manageability,
performance, availability, reliability, and security that are defined in
terms of context.
- Friction is how much interaction
occurs between two components. Friction is measured based on how a change
in one affects both components.
- Layering is a hierarchy of separation.
- Surface Area is list of methods that are
exposed to the client.
- The key difference
between architecture and design is in the level of detail.
Architecture operates at a high level of abstraction with less detail. Design
operates at a low level of abstraction, obviously with more of an eye to
the details of implementation
- System architecture corresponds to the
concept of architecture
as a product. It is the result of a design process for a specific
system and must consider the functions of components, their interfaces,
their interactions, and constraints. This specification is the basis for
application design and implementation steps.
- Reference architecture corresponds to architecture as a style or method. It refers to a
coherent design principle used in a specific domain.
Role of an
architect: (Paul Allen Book)
- Visualizes the behavior of the system.
- Create the blueprint for the system.
- define the way in
which the elements of the system work together and
- Distinguish between functional
and nonfunctional system requirements.
- Architects are
responsible for integrating non-functional
requirements into the system.
Load Balancing Web Applications:
- Cluster: group of servers running a Web
application simultaneously, appearing to the
world as if it were a single server. Within the J2EE framework, clusters
provide an infrastructure for high availability (HA) and scalability.
- Clustering = replication + load
balancing + fail over à achieves HA +scalability+ performance
- Load balancing: the system
distributes requests to different nodes within the server cluster, with the goal of optimizing
system performance. This results in
higher availability and scalability
- Load balancers: Single points of entry into
the cluster and traffic directors to individual Web or application servers
- High Availability: can be defined as redundancy. In a highly available
system, if a single Web server fails, then another server takes over, as
transparently as possible, to process the request. A cluster only provides HA at the
application server tier. For a Web system to exhibit true HA, it must be like
Noah's ark in containing at least two of everything, including Web
servers, gateway routers, switching infrastructures, and so on.
- Scalability: application's ability to
support a growing number of users. Scalability is a measure of a range of
factors, including the number of simultaneous users a cluster can support
and the time it takes to process a request
Of
the many methods available to balance a server load, the main two are:
- DNS round robin and
- Hardware load balancers.
DNS RR Load Sharing:
- DNS is the process by which a logical name (i.e.,
www.javaworld.com) is converted to an IP address. In DNS round-robin load
balancing, a single logical name can return any IP address of the machines
in a cluster.
- Spreading incoming IP packets
among a number of DNS addresses equally.
- One host name URL but
different IP addresses.
- Simple Round Robin (but not using DNS),which is
different from DNS RR, is load balancing technique
- Advantages:
- Widely available,
easy to use, and low cost.
- A simple addition to the
name-server configuration file allows a pool of servers to be clustered
and appear to act as a single host to the clients, when in reality
requests are being alternated between all the hosts in the pool.
- Very effective for small to
medium size business or organizations. It is extremely popular among
ISPs, e-commerce sites, universities, and other cost sensitive sites.
- Disadvantages:
- No support for high availability. Inability to
handle server failures. Requests from clients will still go to this
failed server IP address when it is its turn in the round robin pool. The
result is that all of these requests will go to hosts that will not
operate correctly
- When new node is added/removed
i.e. Changes to the
cluster take time to propagate through the rest of the Internet. (DNS servers cache DNS lookups from their clients )When you
drop a node, a user may be trying to hit a non-existing server. When you
add one, that server may just be under-utilized until its IP address
propagates to all the DNS server
- Is a simple load-sharing
strategy. It does not take into account the actual load on the machines.
One or more of the hosts in the pool will tend to get more activity than
the other servers
- It is Load sharing technique rather than load
balancing. Load balancing distributes connection loads across multiple
servers, giving preference to those servers with the least amount of
congestion. In round robin's case, server distribution remains on a rigid
one IP address to one user rotating basis.
- No support for server affinity. Server affinity
is a load-balancing system's ability to manage a user's requests, either
to a specific server or any server, depending on whether session
information is maintained on the server or at an underlying, database
level.
Hardware Load Balancers:
·
The load balancer shows a single (virtual) IP address to the outside world,
which maps to the addresses of each machine in the cluster
·
When a request comes to the load balancer, it rewrites the
request's header to point to other machines in the cluster
·
Advantages
of Hardware Load Balancers:
o
Server affinity. The
hardware load balancer reads the cookies or URL readings on each request made
by the client. Based on this information, it can rewrite the header information
and send the request to the appropriate node in the cluster, where its session
is maintained.
o
High Availability through Failover.
Failover happens when one node in a cluster cannot process a request and
redirects it to another. There are two types of failover:
- Request Level Failover. When the load balancer
detects that a particular node has gone down, it redirects all
subsequent requests to that dead node to another active node in the cluster.
However, any session information on the dead node will be lost when
requests are redirected to a new node.
- Transparent Session Failover. When an
invocation fails, it's transparently routed to another node in the
cluster to complete the execution. To achieve transparent session
failover, the nodes in the cluster must collaborate among each other and
have something like a shared memory area or a common database where all
the session data is stored. Therefore, if a node in the cluster has a
problem, a session can continue in another node.
- Metrics. Used to collect metrics
data as all requests to a Web application must pass through the
load-balancing system.
·
Disadvantages
of Hardware Load Balancers:
o
Can’t
provide server affinity in HTTPS communication as the messages are SSL-encrypted,
and this prevents the load balancer from reading the session information. There
are two options to solve this problem: Web server proxies OR Hardware SSL
decoders.
o
High costs, the complexity of setting up
o
Vulnerability to a single point of failure- Since all requests pass through a single hardware load
balancer, the failure of that piece of hardware sinks the entire site
Load Balancing HTTPS Requests:
·
Web Server Proxies:
o
A Web server proxy that sits in front of a cluster of Web servers takes all requests and
decrypts them. Then it redirects them to the appropriate node, based on header
information in the header, cookies, and URL readings
o
Advantages:
§
Are that they offer a way to get server affinity for
SSL-encrypted messages, without
any extra hardware.
o
Disadvantages:
§
But extensive SSL processing puts an extra load on the proxy.
§
The hardware load balancer cannot use metrics to direct requests
§
Web server proxies need to support server affinity
·
Hardware SSL Decoder / SSL Accelerator:
o
sit in front of the hardware load balancer, allowing it to decrypt
information in cookies, headers and URLs.
o
Advantages:
§
Faster than Web server proxies
§
Off-loaded SSL processing to the SSL accelerator, which
increases scalability
§
Centralized SSL certificate management in a single box
o
Disadvantages:
§
Cost more
§
Complicated to set up and configure
Reverse Proxy load balancing:
§
Is generally used when you have servers with different
amounts of CPUs and Memory.
§
You might have some really powerful servers just to be used
for SSL sessions and others to handle static html.
§
Using this will maximize the performance of your
application
FAULT TOLERANCE:
§
Failure: discrepancy between
the desired or specified and the actual behavior of a system. Failures are external
symptoms of faults (defects).A failure is an external symptom of a fault.
§
Fault: defect with the
potential to cause a failure. While it has this potential, it may never
actually do so. A failure is a guarantee that a fault has occurred.3 types of faults: server process fault, server fault,
network fault
§
Fault
tolerance:
the ability to prevent failures even when some of the system components have
faults.
§
The key to achieving fault tolerance is redundancy. Redundancy requires replication
§
Hot
backup / Active Replication: Extra, live copies (replicas) of an object are serving
client requests and synchronize continuously with the primary object. If the
primary object fails, one of the copies takes over. Every replica handles
requests and replies. Interceptor has to block extra calls to third objects and
extra responses
§
Warm
backup / Passive Replication: Backup copies of an object run, but don’t serve clients. Synchronization
happens at certain, regular intervals. One primary replica handles requests and
synchronizes state with secondary replicas. Requests are also logged. For
fail-over, a secondary replica becomes primary and processes all requests after
the last synchronization point
§
Cold
backup:
The primary object synchronizes with stable storage in certain intervals. In
the case of a failure, a new object is instantiated and reads the storage for
set-up.
§
Hot
backup or active replication is for Load balancing also. But the Warm backup/
passive replication and cold backup are not for load balancing, but only for
fault tolerance.
§
Fault
handling
includes service
replication, fault detection, fault recovery, and fault notification.
§
Fault detection is often done by using heartbeats (server
sends periodical signal to monitor) or polling (monitor checks server once in a
while).
§
Fault handling in CORBA involves Replica Managers and
Replica Service Agents.
Comparison of J2EE architecture with
Microsoft DNA Architecture:
- Component types supported. Windows DNA has
no support for data components, whereas J2EE platform-based products
support both types of components (data components and business
components).
- State management. Windows DNA has very poor
support for a stateful business process component, and does not provide
state management services. J2EE platform-based products support stateful
business processes today.
- Database caching. A robust data caching system
enhances the scalability of a commerce system significantly. The Windows
DNA architecture provides automatic result set caching for applications.
Unfortunately, Windows DNA does not include support for data object
caching, nor for distributed shared data object caching. This
significantly impairs the scalability of a Windows DNA deployment compared
to a J2EE platform-based deployment.
- Declarative (automated) persistence. A declarative
persistence model enables developers to persist enterprise data without
writing code, such as Java Database Connectivity (JDBC) code. This reduces
coding time significantly, and allows one to author database independent code.
Windows DNA does not support declarative persistence as it doesn’t support
data components. By way of comparison, several vendors implementing the
J2EE platform support complex automated persistence today.
- Scalability through load-balancing. For a scalable multi-tier
deployment, a corporation must be able to add middle tier machines as
necessary to handle high-volume transactional load. This requires logic to
automatically load-balance across middle tier components. Windows DNA
contains load-balancing technology to spread IP traffic among Web servers,
which is called Network Load-Balancing. This technology is effective at
balancing incoming requests to Web server machines. Microsoft does not
currently offer load-balancing technology that directs requests from the
presentation tier to the business tier
|
Advantages
|
Disadvantages
|
Spoke: Connect to
Partner Extranets
|
• Speed and ease of getting access
• Richness of available
information
|
• Access to just one partner’s data at a time
• Dependent on partners taking the initiative
|
Exchange: Participate in a
B2B Exchange
|
• Availability of data from a community of partners
• Minimal IT investment
|
• View limited to members of the exchange
• Workflow and data conventions defined by exchange
• Data granularity limited by exchange
|
Hub: Build a Corporate
B2B Extranet
|
• Aggregation of data from all trading partners
• Manage and view at finer granularity
|
• Higher up-front commitment
and investment (can be mitigated through ASP-style hosting
• Requires owner to establish
trading partner relationships
|
All Ways
|
• Access to rich data from key trading partners
• Access to data from widest
combination of trading partners
• Aggregation and company-specific viewing of all data
|
• Highest level of up-front commitment and investment (mitigated
through ASP-style hosting)
|
|
Supply Chain
Collaboration: Spoke, Exchange, or Hub : B2B
- Basis for
Supply-chain collaboration à CPFR: Collaborative
Planning, Forecasting and Replenishment
Spoke
- Working with
trading partners over the Internet by sub-scribing to a large partner’s extranet
hub.
- These ex-tranets
typically provide online access through a web browser to reports of
supply chain activity, as well as key performance measures
- two sets of
benefits:
- Speed and ease of getting
access.
- Richness of the information that is
available. Trading partners only need a PC and Internet access to take
advantage of the extranet. Typically they do not need to purchase,
install and configure any software, or translate data from some
machine-readable format to review it.
- The problems with
using partners’ extranets are also twofold:
- Users only get to see the data one partner at a
time. Assembling the “big picture” of a company’s supply chain
performance and customer demand from multiple trading partner extranet
reports is next to impossible.
- Making sense of data that is
represented in terms of a partner’s geographies, channels and product
categories is difficult. A retailer typically shows its data by
department, while a manufacturer needs data by brand. Retailer
departmental data may not map well to a manufacturer’s brands.
Differences in multiple partners’ views further complicate the problem.
- Being a spoke on
a trading partner extranet hub is an excellent way to ex-periment, but a
difficult way to move supply chain collaboration into production.
- Relationships can only be managed
one-on-one, and
- Data is difficult to translate to
local company needs.
- The approach is
most appropriate if a company is small, or limited in IT capabilities,
and does most of its business with a single large customer or supplier.
Exchange
- Demand from several
trading partners can be integrated and represented in each company’s own
category, geography, and channel views.
- The exchange
handles IT
implementation issues, so local company IT investment is minimal.
- Each partner simply
supplies core supply
chain data to the exchange; beyond that, all access is by users through
their web browsers.
- three limitations
of using a B2B exchange to implement supply chain collaboration:
- An exchange may represent a large number
of trading partners, but it is unlikely to represent all of a company’s
trading partners. Strategic
partners may be missing.
- An exchange provides only a standard offering – some
manufacturers and retailers may wish to collaborate with a different
workflow process or data conventions.
- There are technical limits to the amount of
data that a B2B exchange can host. If a large retailer wishes
to provide supply chain collaboration at a store level on a daily basis,
it is currently not feasible to replicate the required data to a B2B
exchange.
Hub ~~Trading Partner’s Extranet Hub
- Building and
managing a trading partner extranet can be a major undertaking.
- For medium-to-large companies who need to gain
the maximum competitive advantage it is probably a necessity.
- Only on its own hub
can a company
aggregate the demand from its entire network, includ-ing strategic
partners, exchanges, and internal relationships (for vertically integrated
companies).
- For retailers who wish to drive collaboration
down to the detailed level – daily, store-level data, and 52-week or
longer forecasts that are updated frequently – im-plementing CPFR directly
on their own enterprise data warehouse is the only practical solution, at
least today
What Is The
Difference Between B2B and B2C?
B2B
- Concerns itself
primarily with supply
chain management.
- These are portals
that allow businesses
to deal directly with their suppliers and distributors online
- Wholesalers, distributors and
manufacturers fall in this category
- B2B sites normally
handle a lot more than just sales of products; they are a portal to conduct business transactions.
B2C
- B2C concerns itself
with selling to the
end user
- They are actually internet based. That is to say
they exist primarily on the internet. Offices and warehousing are borne
from necessity of their internet success.
- B2C websites are
intermediary portals to
link customers to suppliers
- All of these
businesses exist primarily on the internet. They are what is known as e-businesses
- All of them can be
classified under one general heading, market places.
- A B2B site deals
primarily with other businesses, not the general public, a B2C site sells
directly to the end user
One Tier
Architecture:
- Think of an application that runs on your PC: Everything you
need to run the application (data storage, business logic, user interface,
and so forth) is wrapped up together
- Monolithic,
“all-in-one” model – e.g. clients are “dumb” terminals connected directly
to the mainframe.
- is a simple design that's easy to
distribute, it does not
scale well
- does not adequately
address the needs of a web-based application
- Scalability à Poor.
Vertical scalability only;
expansion capabilities are physically limited (e.g. free CPU slots,
terminal ports)
- Security à Good à as the connectivity is physically limited
- Extensibility à Poor à component reuse
difficult due to tight-couplingà as any change affects the
entire system
- Availability à Poor à Single point of failure
- Maintainability à Poor à any change affects
the entire system
- Performance à Mixed à Pros: no remote process communication; àCons: a runaway process could
affect others
- Manageability àgood as the all are
at one place.
- Reliability à Mixed à Risk of failure
Two Tier
Architecture / Client – Server Model:
- Typically composed
of multiple clients and a single server; the clients connect to the server
over a network
- Fat Client e.g. implements the GUI,
retrieves data from the server(s), and performs business logic based on
the data. E.g.: use of Java-applets
- Server is typically
a database. Provides a shared
data-store for the client.
- The server doesn’t
typically implement business logic. Later revisions to the model implement
some of the business logic on the server as stored procedures (a.k.a. fat servers).
- Fat Servers: the client is
used only to perform the display portion of the presentation component,
and the server performs most of the presentation logic and all of the
business and data access logic. e.g. in typical web-applications where the
browser has to cope with HTML
- Problems with the
2-tier model are :
- The business logic
may be complex and computationally expensive. Consequently, the client may require powerful
hardware
- client components
are tightly coupled, not modular –
e.g. a change to the GUI means shipping the whole application to every
client
- Data retrieval - each client has to make a direct
connection to each server it needs data from. Also, the results transferred
may be large and transferred using an inefficient (and perhaps
proprietary)protocol
- Fat servers use stored
procedures which are not
very portable.
- Security à Poor à Client: difficult
to enforce the security policy (fat clients are distributed all over the
place; could be used/accessed by anyone); available options are
SSL/VPN/user authentication (too coarse); Server: has to be exposed to the outside world
for client access so vulnerable to attack.
- Extensibility à Poor à Client: client
tightly coupled to the business logic (although code may be reused for
clients that support the language the code is written in, there would be
multiple deployments); Server: if using a fat server, stored procedures
have to be provided for each DB used.
- Availability à Poor àsingle point of
failure (usually a single database)
- Reliability à Mixed à availability and performance
issues
- Maintainability à Poor à Client: updates
have to be applied to all clients in turn; Server: ok - everything in
one place; simple to troubleshoot
- Performance à Poor à Client: result may be large;
result data transfer protocol may be inefficient; client may be
underpowered (local processing may be intensive); Server: ok – e.g. DB caching
- Scalability à Poor à Client: each client requires
a separate DB connection; Server: server can be scaled vertically; some
horizontal scaling is possible but potentially requires client intelligence
- Manageability à in between 1-tier
and n-tier
3 - Tier Architecture:
- In the typical
example of this model, the web browser acts as the client, an application
handles the business logic, and a separate tier handles database
functions.
- 3-tier architecture
is the most common approach used for web applications today.
- Although the 3-tier
approach increases scalability and introduces a separation of business
logic from the display and database layers, it does not truly separate the
application into specialized, functional layers. For prototype or simple
web applications, 3-tier architecture may be sufficient. However, with
complex demands placed on web applications, a 3-tiered approach falls
short in several key areas, including flexibility and scalability. These
shortcomings occur mainly because the business logic tier is still too
broad- it has too many functions grouped into one tier that could be
separated out into a finer grained model.
N Tier Architecture:
- The single most
important benefit of an n-tiered architecture, compared to a 3-tier
approach, is breaking up the business logic from the application-server
level into a more fine-grained model
- The separation of
concerns, packaging, and service distribution helps immensely in maintainability, scalability
and flexibility of deployment configurations
- Scalability à Good à Good modular which
supports vertical/horizontal scaling; multiple instances; demand-based
pooling
- Security à Good à Pros: security can be applied
to each tier and targeted where required; à Cons: complex architecture so
something could be missed; more to secure so could be expensive
- Extensibility à Good à Good modular in
nature so components can be added/replaced as required; business logic is
centralized on the app servers
- Reliability à Good à as the availability and performance are good
- Availability à Good à because of
clustering à Pros: multiple instances (no
single point of failure); Cons: expensive
- Maintainability à good à Pros: multiple instances
(facilitates day-to-day maintenance); centralized business logic so easy
to update; Cons: complex; distributed in nature; difficult to troubleshoot;
requires ASAs (app server admins), DBAs
- Manageability à Mixed à compenent architecture
lessens the burden
- Performance à Good à Pros: load
balanced over multiple instances; instance and DB pooling; caching;
specific modules can be tuned in isolation; à Cons: process communication
overhead (e.g. remote method invocation creates an overhead which affects
performance)
N Tier J2EE
Architecture:
- Web Client Tier:
- The Web Client
Tier is visible to the end user.
- This tier consists
of the HTML that is generated from either Java Server Pages (JSP) or
parsed XML documents, and is viewed using a web-browser such as Internet
Explorer or Netscape Navigator. The web browser will format the HTML
using Cascading Style Sheets (CSS).
- Tier Constraint:
Components in this tier must only display business data and capture user gestures
for change requests.
- This tier
participates in the implementation of the View and Control of MVC.
- Technologies:
- Java Based
Technologies: Applets, Applications.
- Related
Technologies: HTML, HTML Forms, JavaScript, Style Sheets, SSL
- Non-Java
Technologies: MS Active Technologies such as ActiveX and OLE, VB Script,
Jscript.
- Protocol: HTTP,
HTTPS.
- Presentation Tier
- Responsible for
the generation of the views (i.e. the HTML pages that are delivered to
the browser).
- The components in
this tier use JSP technology to access the business tier to query for
data and to communicate the changes to it as requested by the user.
- Tier Constraints:
Components and objects in this tier must interpret business data and
generate documents that can be viewed by web browsers. They must also be
capable of receiving change requests from the web client tier and passing
it on to the Business Tier.
- This tier
participates in the implementation of the View and Control of MVC.
- Technologies:
- Java Based
Technologies: JSP, Servlets.
- Related
Technologies: Web Services, SOAP.
- Non-Java
Technologies: MS Active Server
Pages.
- Protocol: JRMP,
IIOP, RMI-IIOP.
- Business Tier
- Business logic and
rules are implemented in this tier.
- The components in
this tier model business objects and concepts of the application.
- The design provides
a layer of abstraction giving us implementation transparency to the data
store and mechanisms.
- These components
are the interfaces to data and provide essential services such as
transaction monitoring, data integrity availability etc.
- Tier Constraints:
- The components in
this tier must contain business logic, rules and represent business
data.
- The container of
the components of this tier must provide transaction management,
component lifecycle management, enable load handling and fault tolerance
and other services as specified in the product requirements.
- This tier
participates in the Control and Model of MVC.
- Technologies:
- Java Based
Technologies: EJB (the mainstay of J2EE), JTA, JTS
- Related
Technologies: JNDI, CORBA, RMI.
- Non-Java
Technologies: COM, DCOM, COM+.
- Integration Tier
- This contains
objects, components and services that provide data connectivity.
- The APIs used in
this tier hides the heterogeneous nature of resources that is available
and necessary for business operations. For example data from an oracle
database or a bar code scanner can be treated pretty much the same way by
the objects in business tier thanks to this tier.
- Tier Constraints:
- Components in
this tier must enable the communication of the business tier with the
resource tier.
- This
communication must be location transparent and homogenous to the
business tier.
- This tier
participates in the Model of MVC.
- Technologies:
- Java Based
Technologies: JDBC, JCA, JMS, JDO
- Related
Technologies: Messaging products like MQSeries, SonicMQ
- Non-Java
Technologies: ODBC, OLEDB, ADO.
- Resources Tier / Data Tier
/Persistence Tier
- This tier can also
be called data tier, persistence tier etc. This tier is where data for
the business application is stored. Other resources such as real-time
data collects like barcode scanners can also belong to this tier.
- Tier Constraints:
The contents of this tier must provide persistence of business objects
represented in the business tier.
- This tier
participates in the Model of MVC.
- Technologies:
- Related Technologies:
RDBMS, Mainframes, CICS, ERP Systems like SAP, barcode scanners